@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo.
echo 🎵 音频格式转换工具 - Dify AI 语音转文字优化
echo ================================================
echo.

:: 检查参数
if "%1"=="" (
    echo 📖 使用方法:
    echo   audio-format-converter.bat ^<input_file^> [output_format]
    echo.
    echo 📋 参数说明:
    echo   input_file    输入音频文件路径
    echo   output_format 输出格式 (可选，默认为 mp3)
    echo.
    echo 📝 示例:
    echo   audio-format-converter.bat voice.ogg mp3
    echo   audio-format-converter.bat audio.wma wav
    echo   audio-format-converter.bat recording.m4a
    echo.
    echo 🔧 依赖要求:
    echo   需要安装 FFmpeg: https://ffmpeg.org/download.html
    echo.
    echo 💡 提示:
    echo   - MP3 格式推荐用于语音识别
    echo   - WAV 格式推荐用于高质量音频
    echo   - 转换后的文件会自动优化为语音识别最佳参数
    echo.
    pause
    exit /b 1
)

set "input_file=%1"
set "output_format=%2"

:: 如果没有指定输出格式，默认为 mp3
if "%output_format%"=="" set "output_format=mp3"

:: 检查输入文件是否存在
if not exist "%input_file%" (
    echo ❌ 错误: 文件不存在: %input_file%
    pause
    exit /b 1
)

:: 检查 FFmpeg 是否可用
ffmpeg -version >nul 2>&1
if errorlevel 1 (
    echo ❌ 错误: 未找到 FFmpeg
    echo 请先安装 FFmpeg: https://ffmpeg.org/download.html
    echo.
    echo Windows 安装方法:
    echo 1. 下载 FFmpeg: https://www.gyan.dev/ffmpeg/builds/
    echo 2. 解压到 C:\ffmpeg 目录
    echo 3. 将 C:\ffmpeg\bin 添加到系统 PATH 环境变量
    echo.
    pause
    exit /b 1
)

:: 获取文件信息
for %%F in ("%input_file%") do (
    set "file_name=%%~nF"
    set "file_ext=%%~xF"
    set "file_dir=%%~dpF"
)

:: 设置输出文件路径
set "output_file=%file_dir%%file_name%_converted.%output_format%"

:: 显示转换信息
echo 📁 文件信息:
echo    路径: %input_file%
echo    名称: %file_name%%file_ext%
echo    输出格式: %output_format%
echo    输出文件: %output_file%
echo.

:: 根据输出格式设置转换参数
if /i "%output_format%"=="mp3" (
    echo 🔄 正在转换为 MP3 格式 (优化为语音识别)...
    ffmpeg -i "%input_file%" -acodec libmp3lame -ar 16000 -ac 1 -b:a 128k -y "%output_file%"
) else if /i "%output_format%"=="wav" (
    echo 🔄 正在转换为 WAV 格式 (优化为语音识别)...
    ffmpeg -i "%input_file%" -acodec pcm_s16le -ar 16000 -ac 1 -y "%output_file%"
) else (
    echo 🔄 正在转换为 %output_format% 格式...
    ffmpeg -i "%input_file%" -y "%output_file%"
)

:: 检查转换结果
if exist "%output_file%" (
    echo.
    echo ✅ 转换成功!
    echo 📁 输出文件: %output_file%
    echo.
    echo 💡 现在可以使用转换后的文件进行语音转文字了!
    echo.
    
    :: 显示文件大小
    for %%F in ("%output_file%") do (
        set "output_size=%%~zF"
        set /a "output_size_mb=!output_size!/1024/1024"
        echo 📊 文件大小: !output_size_mb! MB
    )
) else (
    echo.
    echo ❌ 转换失败!
    echo 请检查输入文件格式是否正确
    echo.
    echo 💡 如果转换失败，可以尝试使用在线转换工具:
    echo    - https://convertio.co/audio-converter/
    echo    - https://www.onlinevideoconverter.com/
    echo    - https://audio.online-convert.com/
)

echo.
pause
